From: Michal Babej Date: Tue, 31 Aug 2021 06:11:52 +0000 (+0300) Subject: [PATCH 13/90] Fix data race in compile_and_link_program() X-Git-Tag: archive/raspbian/1.8-3+rpi1^2~87 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=87cf19ebb493d1f4e7862959bee9a57629a608f2;p=pocl.git [PATCH 13/90] Fix data race in compile_and_link_program() lock cl_program before touching kernels Gbp-Pq: Name 0013-Fix-data-race-in-compile_and_link_program.patch --- diff --git a/lib/CL/pocl_build.c b/lib/CL/pocl_build.c index f2746e3..c162fae 100644 --- a/lib/CL/pocl_build.c +++ b/lib/CL/pocl_build.c @@ -611,11 +611,13 @@ compile_and_link_program(int compile_program, POCL_GOTO_LABEL_COND (PFN_NOTIFY, (pfn_notify == NULL && user_data != NULL), CL_INVALID_VALUE); - POCL_GOTO_LABEL_ON (PFN_NOTIFY, program->kernels, CL_INVALID_OPERATION, + POCL_LOCK_OBJ (program); + + POCL_GOTO_LABEL_ON (FINISH, program->kernels, CL_INVALID_OPERATION, "Program already has kernels\n"); POCL_GOTO_LABEL_ON ( - PFN_NOTIFY, + FINISH, (program->source == NULL && program->binaries == NULL && program->builtin_kernel_names == NULL), CL_INVALID_PROGRAM, @@ -623,13 +625,11 @@ compile_and_link_program(int compile_program, "need " "to call clCreateProgramWith{Binary|Source|BuiltinKernels} first\n"); - POCL_GOTO_LABEL_ON (PFN_NOTIFY, + POCL_GOTO_LABEL_ON (FINISH, ((program->source == NULL) && (link_program == 0)), CL_INVALID_OPERATION, "Cannot clCompileProgram when program has no source\n"); - POCL_LOCK_OBJ (program); - program->main_build_log[0] = 0; TP_BUILD_PROGRAM (program->context->id, program->id);